package com.beargod.aubridge

import android.util.Log
import com.google.protobuf.Message

/**
 * 包装调用结果
 */
public data class HandleResult<TResult: Message>(val apiResultCode: ApiResultCode, val result: TResult?){
    companion object {
        /**
         * 生成一个调用结果，结果中包含一个错误码
         *
         * @param apiResultCode 错误码
         */
        fun <TResult: Message> withError(apiResultCode: ApiResultCode): HandleResult<TResult> {
            if (apiResultCode == ApiResultCode.Ok){
                Log.e("HandlerResult", "Can not invoke this api with ok")
                return HandleResult(ApiResultCode.Unknown, null)
            }

            return HandleResult(apiResultCode, null)
        }

        /**
         * 生成一个调用结果，结果中有返回信息
         * @param message 返回信息
         */
        fun <TResult: Message> withMessage(message: TResult): HandleResult<TResult> {
            return HandleResult(ApiResultCode.Ok, message)
        }
    }
}
